home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / assfuncs.i < prev    next >
Text File  |  1997-10-26  |  17KB  |  465 lines

  1. IMPLEMENTATION MODULE AssFuncs;
  2.  
  3. FROM SYSTEM IMPORT ADDRESS, ASSEMBLER;
  4.  
  5. IMPORT MagicStrings;
  6.  
  7. CONST   CR      = 15C;
  8.         LF      = 12C;
  9.         TAB     = 11C;
  10.  
  11. (*$L-,R-,S-,Z+*)
  12.  
  13. (* Fr Editbase *)
  14. PROCEDURE findLineEnd (buf : ADDRESS; startIdx : LONGCARD; max : LONGCARD) : LONGCARD;
  15. BEGIN
  16.   ASSEMBLER
  17.     MOVE.L      -(A3),D1
  18.     MOVE.L      -(A3),D0        ; startIdx
  19.     MOVE.L      -(A3),A0
  20.     ADDA.L      D0,A0
  21. loop:
  22.     CMP.L       D1,D0
  23.     BGT.S       found
  24.     MOVE.B      (A0)+,D2
  25.     BEQ.S       found
  26.     CMPI.B      #CR,D2
  27.     BEQ.S       found
  28.     CMPI.B      #LF,D2
  29.     BEQ.S       found
  30. ;    CMPI.B      #$1A,D2
  31. ;    BEQ.S       found
  32. ; ge„ndert: Keine Wandlung mehr von irgendwelchen Zeichen
  33. ;    CMPI.B      #$1F,D2
  34. ;    BGT.S       goon
  35. ;    CMPI.B      #0,D2
  36. ;    BLE.S       goon
  37. ;    ; Zeichen < 32 werden in Spaces gewandelt 
  38. ;    CMPI.B      #$10,D2
  39. ;    BEQ.S       goon
  40. ;    CMPI.B      #TAB,D2
  41. ;    BEQ.S       goon        ; TAB nicht wandeln!
  42. ;    MOVE.B      #' ',-1(A0)
  43. goon:
  44.     ADDQ.L      #1,D0
  45.     BRA.S       loop
  46. found:
  47. ;    CMPI.B      #$1A,D2
  48. ;    BNE.S       exit
  49. ;    MOVE.B      #0,-1(A0)
  50. exit:
  51.   END;
  52. END findLineEnd;
  53.  
  54. (* Fr Case-Insensitive Stringvergleiche *)
  55. PROCEDURE StrIequal (REF s1, s2 : ARRAY OF CHAR): BOOLEAN;
  56. BEGIN
  57.   ASSEMBLER
  58. ;        MOVEM.L D3-D7,-(SP)
  59.         MOVE    -(A3),D0
  60.         MOVE.L  -(A3),A0
  61.         MOVE.W  -(A3),D1
  62.         MOVE.L  -(A3),A1
  63.         LEA     tab(PC),A2
  64.         CLR.W   D2
  65.  
  66. l       MOVE.B  (A0)+,D2
  67.         BEQ.S   equ1
  68.         SWAP    D1
  69.         CLR.W   D1
  70.         MOVE.B  0(A2,D2.W),D2
  71.         MOVE.B  (A1)+,D1
  72.         CMP.B   0(A2,D1.W),D2
  73.         BNE.S   ne
  74.         SWAP    D1
  75.         SUBQ.W  #1,D0
  76.         BCS.S   e
  77.         DBRA    D1,l
  78.  
  79.         ; str1 zu Ende, str0 aber nicht
  80.         TST.B   (A0)+
  81.         BEQ.S   equ0
  82.         BRA.S   ne
  83.  
  84. equ1    ; str0 zu Ende, str1 prfen
  85.         TST.B   (A1)+
  86.         BEQ     equ0
  87.  
  88. ne      CLR     D0
  89. ;        MOVEM.L (SP)+,D3-D7
  90.         RTS
  91.  
  92. e       ; str0 zu Ende, str1 prfen
  93.         TST.W   D1
  94.         BEQ.S   equ0
  95.         TST.B   (A1)+
  96.         BNE.S   ne
  97.  
  98. equ0    MOVE    #1,D0
  99. ;        MOVEM.L (SP)+,D3-D7
  100.         RTS
  101.  
  102.   tab:  DC.B $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  103.         DC.B $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  104.         DC.B ' ','!','"','#','$','%','&',$27,'(',')','*','+',',','-','.','/'
  105.         DC.B '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'
  106.         DC.B '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  107.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_'
  108.         DC.B '`','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  109.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','{','|','}','~',''
  110.         DC.B '€','š','','A','Ž','¶','','€','E','E','E','I','I','I','Ž',''
  111.         DC.B '','’','’','O','™','O','U','U','˜','™','š','›','œ','','ž','Ÿ'
  112.         DC.B 'A','I','O','U','¥','¥','¦','§','¨','©','ª','«','¬','­','®','¯'
  113.         DC.B '·','¸','²','²','µ','µ','¶','·','¸','¹','º','»','¼','½','¾','¿'
  114.         DC.B 'Á','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï'
  115.         DC.B 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß'
  116.         DC.B 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï'
  117.         DC.B 'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ'
  118.   END
  119. END StrIequal;
  120.  
  121. PROCEDURE StrICompare (REF str0,str1: ARRAY OF CHAR) : MagicStrings.Relation;
  122.   BEGIN
  123.     ASSEMBLER
  124. ;        MOVEM.L D3-D7,-(SP)
  125.         MOVE.W  -(A3),D0    ; HIGH (str1)
  126.         MOVE.L  -(A3),A0    ; ADR (str1)
  127.         MOVE.W  -(A3),D1    ; HIGH (str0)
  128.         MOVE.L  -(A3),A1    ; ADR (str0)
  129.  
  130.         (*
  131.         MOVEM.L D0-D7/A0-A6,-(SP)
  132.         LEA     str(PC),A2
  133.         MOVE.L  A0,-(SP)
  134.         MOVE.L  A1,-(SP)
  135.         MOVE.L  A2,-(SP)
  136.         MOVE.W  #4201,-(SP)     ; sysprintf
  137.         TRAP    #1
  138.         ADDA.L  #14,SP
  139.         MOVEM.L (SP)+,D0-D7/A0-A6
  140.         *)
  141.  
  142.         CLR.W   D2
  143.         LEA     tab(PC),A2
  144.  
  145. l       MOVE.B  (A0)+,D2
  146.         BEQ.S   equ1
  147.         MOVE.B  0(A2,D2.W),D2   ; tab[str1[i]] in D2
  148.         SWAP    D1
  149.         CLR.W   D1
  150.         MOVE.B  (A1)+,D1        ;str2[i] in D1
  151.         CMP.B   0(A2,D1.W),D2
  152.         BNE.S   ne
  153.         SWAP    D1
  154.         SUBQ.W  #1,D0
  155.         BCS.S   e
  156.         DBRA    D1,l
  157.  
  158.         ; str1 zu Ende, str0 aber nicht
  159.         TST.B   (A0)+
  160.         BEQ.S   equ0
  161.         BRA.S   hi
  162.  
  163. equ1    ; str0 zu Ende, str1 prfen
  164.         TST.B   (A1)+
  165.         BEQ.S   equ0
  166.         BRA.S   low
  167.  
  168. ne      CLR.W   D2
  169.         MOVE.B  -(A0),D2
  170.         MOVE.B  0(A2,D2.W),D1
  171.         CLR.W   D0
  172.         MOVE.B  -(A1),D0
  173.         CMP.B   0(A2,D0.W),D1
  174.         BHI.S   hi
  175.         BCS.S   low
  176.         CMP.B   D0,D2   ; wenn Umlaute gleich, dann ASCII-Wert vergleichen
  177.         BHI.S   hi
  178.         BRA.S   low
  179.  
  180. e       ; str0 zu Ende, str1 prfen
  181.         TST.W   D1
  182.         BEQ.S   equ0
  183.         TST.B   (A1)+
  184.         BNE.S   low
  185.  
  186. equ0    MOVE    #MagicStrings.equal,D0
  187.         BRA.S   end
  188. hi      MOVE    #MagicStrings.less,D0
  189.         BRA.S   end
  190. low     MOVE    #MagicStrings.greater,D0
  191. end     ; MOVEM.L (SP)+,D3-D7
  192.  
  193.         (*
  194.         MOVEM.L D0-D7/A0-A6,-(SP)
  195.         LEA     str2(PC),A2
  196.         MOVE.W  D0,-(SP)
  197.         MOVE.L  A2,-(SP)
  198.         MOVE.W  #4201,-(SP)     ; sysprintf
  199.         TRAP    #1
  200.         ADDQ.L  #8,SP
  201.         MOVEM.L (SP)+,D0-D7/A0-A6
  202.         *)
  203.  
  204.         RTS
  205.  
  206. (*
  207.   tab:  DC.B $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  208.         DC.B $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  209.         DC.B ' ','!','"','#','$','%','&',$27,'(',')','*','+',',','-','.','/'
  210.         DC.B '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'
  211.         DC.B '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  212.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_'
  213.         DC.B '`','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  214.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','{','|','}','~',''
  215.  
  216.         DC.B    'C','U','E','A','A','A','A','C','E','E','E','I','I','I','A','A'
  217.         DC.B    'E','A','A','O','O','O','U','U','Y','O','U',$9B,$9C,$9D,'S',$9F
  218.         DC.B    'A','I','I','U','N','N','A','O',$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF
  219.         DC.B    'A','O','O','O','O','O','A','A','O',$B9,$BA,$BB,$BC,$BD,$BE,$BF
  220.         DC.B    'I','I',$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF
  221.  
  222. ;        DC.B '€','š','','A','Ž','¶','','€','E','E','E','I','I','I','Ž',''
  223. ;        DC.B '','’','’','O','™','O','U','U','˜','™','š','›','œ','','ž','Ÿ'
  224. ;        DC.B 'A','I','O','U','¥','¥','¦','§','¨','©','ª','«','¬','­','®','¯'
  225. ;        DC.B '·','¸','²','²','µ','µ','¶','·','¸','¹','º','»','¼','½','¾','¿'
  226. ;        DC.B 'Á','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï'
  227.         DC.B 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß'
  228.         DC.B 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï'
  229.         DC.B 'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ'
  230. *)
  231. str:    ACZ    "iComp: %s with %s"
  232.         SYNC
  233. str2:   ACZ    "res: %d "
  234.         SYNC
  235. tab     DC.B    $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  236.         DC.B    $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  237.         DC.B    $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  238.         DC.B    $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  239.         DC.B    $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  240.         DC.B    $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
  241.  
  242.         DC.B    $60,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  243.         DC.B    $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$7B,$7C,$7D,$7E,$7F
  244.  
  245.         DC.B    'C','U','E','A','A','A','A','C','E','E','E','I','I','I','A','A'
  246.         DC.B    'E','A','A','O','O','O','U','U','Y','O','U',$9B,$9C,$9D,'s',$9F
  247.         DC.B    'A','I','I','U','N','N','A','O',$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF
  248.         DC.B    'A','O','O','O','O','O','A','A','O',$B9,$BA,$BB,$BC,$BD,$BE,$BF
  249.         DC.B    'I','I',$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF
  250.         DC.B    $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF
  251.         DC.B    $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF
  252.         DC.B    $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF
  253.     END
  254.   END StrICompare;
  255.  
  256. PROCEDURE CopyId (REF source: ARRAY OF CHAR; VAR dest: ARRAY OF CHAR): CARDINAL;
  257. (* Kopiert eine ID, wandelt dabei den domain-part (alles nach @) in Upcase
  258.  * und liefert die L„nge zurck
  259.  *)
  260. BEGIN
  261.   ASSEMBLER
  262.         MOVE.W  -(A3),D0    ; HIGH (dest)
  263.         MOVE.L  -(A3),A0    ; ADR (dest)
  264.         MOVE.W  -(A3),D1    ; HIGH (src)
  265.         MOVE.L  -(A3),A1    ; ADR (src)
  266.         MOVEQ   #1,D2       ; L„ngenz„hler initialisieren
  267.         LEA     tab(PC),A2
  268.         
  269.         MOVEQ   #'@',D3     ; Begrenzungszeichen 
  270.         BRA.S   nameentry
  271.  
  272. nameloop:
  273.         ADDQ.W  #1,D2       ; Ein Zeichen mehr
  274.         SUBQ    #1,D0
  275.         BCS     ok2         ; Highmarke erreicht
  276. nameentry:
  277.         MOVE.B  (A1)+,D4
  278.         MOVE.B  D4,(A0)+    ; Nach Zielstring
  279.         BEQ     end
  280.         CMP.B   D3,D4       ; '@' gefunden?
  281.         BEQ.S   caseentry
  282.         DBRA  D1,nameloop
  283.         BRA.S   end
  284. caseentry:
  285.         MOVEQ   #0,D3
  286.         BRA.S   caseentry2
  287. caseloop:
  288.         SUBQ    #1,D0
  289.         BCS     ok2         ; Highmarke erreicht
  290. caseentry2:
  291.         ADDQ.W  #1,D2       ; Ein Zeichen mehr
  292.         MOVE.B  (A1)+,D3
  293.         MOVE.B  0(A2,D3.W),(A0)+
  294.         DBEQ    D1,caseloop
  295.         BEQ     end         ; Ende der Source wurde mitkopiert
  296.  
  297. ok2:    CLR.B   (A0)+       ; Noch terminieren
  298. end:
  299.         MOVE.W  D2,D0       ; L„nge zurckgeben
  300.         SUBQ.W  #1,D0       ; ist ein Zeichen zu viel!
  301.         RTS
  302.         
  303. ; Tabelle fr Upcase
  304.   tab:  DC.B $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  305.         DC.B $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  306.         DC.B ' ','!','"','#','$','%','&',$27,'(',')','*','+',',','-','.','/'
  307.         DC.B '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'
  308.         DC.B '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  309.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_'
  310.         DC.B '`','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  311.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','{','|','}','~',''
  312.         DC.B '€','š','','A','Ž','¶','','€','E','E','E','I','I','I','Ž',''
  313.         DC.B '','’','’','O','™','O','U','U','˜','™','š','›','œ','','ž','Ÿ'
  314.         DC.B 'A','I','O','U','¥','¥','¦','§','¨','©','ª','«','¬','­','®','¯'
  315.         DC.B '·','¸','²','²','µ','µ','¶','·','¸','¹','º','»','¼','½','¾','¿'
  316.         DC.B 'Á','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï'
  317.         DC.B 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß'
  318.         DC.B 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï'
  319.         DC.B 'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ'
  320.   END;
  321. END CopyId;
  322.  
  323. PROCEDURE CmpId (REF str1, str2 : ARRAY OF CHAR): BOOLEAN;
  324. (* Vergleicht zwei IDs miteinander, wobei der domain-part case-insensitiv
  325.  * behandelt wird.
  326.  *)
  327. BEGIN
  328.   ASSEMBLER
  329. ;        MOVEM.L D3-D7,-(SP)
  330.         MOVE    -(A3),D0
  331.         MOVE.L  -(A3),A0
  332.         MOVE.W  -(A3),D1
  333.         MOVE.L  -(A3),A1
  334.         LEA     tab(PC),A2
  335.         CLR.W   D2
  336.         MOVEQ   #'@',D3
  337.  
  338. nocase  MOVE.B  (A0)+,D2
  339.         BEQ.S   equ1
  340.         CMP.B   (A1)+,D2
  341.         BNE.S   ne
  342.         SUBQ.W  #1,D0
  343.         BCS.S   e
  344.         CMP.B   D3,D2   ; '@' gefunden?
  345.         BNE.S   cont    ; nein, normal weiter
  346.         SUBQ    #1,D1
  347.         BRA.S   case
  348. cont:
  349.         DBRA    D1,nocase
  350.         BRA     str1end
  351.     
  352. case    MOVE.B  (A0)+,D2
  353.         BEQ.S   equ1
  354.         SWAP    D1
  355.         CLR.W   D1
  356.         MOVE.B  0(A2,D2.W),D2
  357.         MOVE.B  (A1)+,D1
  358.         CMP.B   0(A2,D1.W),D2
  359.         BNE.S   ne
  360.         SWAP    D1
  361.         SUBQ.W  #1,D0
  362.         BCS.S   e
  363.         DBRA    D1,case
  364.  
  365. str1end:
  366.         ; str1 zu Ende, str0 aber nicht
  367.         TST.B   (A0)+
  368.         BEQ.S   equ0
  369.         BRA.S   ne
  370.  
  371. equ1    ; str0 zu Ende, str1 prfen
  372.         TST.B   (A1)+
  373.         BEQ     equ0
  374.  
  375. ne      CLR     D0
  376. ;        MOVEM.L (SP)+,D3-D7
  377.         RTS
  378.  
  379. e       ; str0 zu Ende, str1 prfen
  380.         TST.W   D1
  381.         BEQ.S   equ0
  382.         TST.B   (A1)+
  383.         BNE.S   ne
  384.  
  385. equ0    MOVE    #1,D0
  386. ;        MOVEM.L (SP)+,D3-D7
  387.         RTS
  388.  
  389.   tab:  DC.B $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  390.         DC.B $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  391.         DC.B ' ','!','"','#','$','%','&',$27,'(',')','*','+',',','-','.','/'
  392.         DC.B '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'
  393.         DC.B '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  394.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_'
  395.         DC.B '`','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'
  396.         DC.B 'P','Q','R','S','T','U','V','W','X','Y','Z','{','|','}','~',''
  397.         DC.B '€','š','','A','Ž','¶','','€','E','E','E','I','I','I','Ž',''
  398.         DC.B '','’','’','O','™','O','U','U','˜','™','š','›','œ','','ž','Ÿ'
  399.         DC.B 'A','I','O','U','¥','¥','¦','§','¨','©','ª','«','¬','­','®','¯'
  400.         DC.B '·','¸','²','²','µ','µ','¶','·','¸','¹','º','»','¼','½','¾','¿'
  401.         DC.B 'Á','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï'
  402.         DC.B 'Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß'
  403.         DC.B 'à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï'
  404.         DC.B 'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ'
  405.   END
  406. END CmpId;
  407.  
  408. PROCEDURE WandleIso (str: ADDRESS; strLen: CARDINAL);
  409. (* Wandelt den String von ISO-8859-1 nach ST-Zeichensatz um
  410.  *)
  411. BEGIN
  412.   ASSEMBLER
  413.         MOVE.W  -(A3),D0        ; L„nge
  414.         MOVE.L  -(A3),A0        ; ADR(str)
  415.         LEA     tab(PC),A1
  416.         SUBQ.W  #1,D0           ; -1 fr DBRA
  417. loop:   MOVE.B  (A0),D1
  418.         MOVE.B  0(A1,D1.W),(A0)+
  419.         DBRA    D0,loop
  420. ende:   RTS
  421.  
  422. tab:    DC.B $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  423.         DC.B $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  424.         DC.B $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  425.         DC.B $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  426.         DC.B $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  427.         DC.B $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
  428.         DC.B $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F
  429.         DC.B $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F
  430.  
  431. (* Neue Tabelle aus GNU recode *)
  432.         DC.B 199, 252, 233, 226, 228, 224, 229, 231 (* 128 - 135 *)
  433.         DC.B 234, 235, 232, 239, 238, 236, 196, 197 (* 136 - 143 *)
  434.         DC.B 201, 230, 198, 244, 247, 242, 251, 249 (* 144 - 151 *)
  435.         DC.B 187, 214, 220, 243, 195, 209, 223, 159 (* 152 - 159 *)
  436.         DC.B 225, 173, 155, 156, 245, 157, 192, 221 (* 160 - 167 *)
  437.         DC.B 185, 189, 166, 174, 170, 237, 190, 255 (* 168 - 175 *)
  438.         DC.B 227, 241, 253, 254, 186, 181, 188, 250 (* 176 - 183 *)
  439.         DC.B 213, 191, 167, 175, 172, 171, 169, 168 (* 184 - 191 *)
  440.         DC.B 182, 193, 194, 183, 142, 143, 146, 128 (* 192 - 199 *)
  441.         DC.B 200, 144, 202, 203, 204, 205, 206, 207 (* 200 - 207 *)
  442.         DC.B 208, 165, 210, 211, 212, 184, 153, 215 (* 208 - 215 *)
  443.         DC.B 178, 217, 218, 219, 154, 180, 222, 158 (* 216 - 223 *)
  444.         DC.B 133, 160, 131, 176, 132, 134, 145, 135 (* 224 - 231 *)
  445.         DC.B 138, 130, 136, 137, 141, 161, 140, 139 (* 232 - 239 *)
  446.         DC.B 240, 164, 149, 162, 147, 177, 148, 246 (* 240 - 247 *)
  447.         DC.B 179, 151, 163, 150, 129, 216, 248, 152 (* 248 - 255 *)
  448.  
  449. (* Alte Tabelle
  450.         DC.B 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143
  451.         DC.B 144,145,146,147,148,149,150,151,152,153,154,155,156,157,225,159
  452.         DC.B  32,173,155,156,120,157,124,221, 34, 67,166,174,170, 45, 82,223
  453.         DC.B 248,241,253,252, 39,230,227,249, 44, 49,167,175,172,171, 47,168
  454.         DC.B 133,160,131, 65,142,143,146,128,138,144,136,137,141,161,140,139
  455.         DC.B  68,165,149,162,147,111,153,120,237,151,163,150,154,121, 80,158
  456.         DC.B 133,160,131, 97,132,134,145,135,138,130,136,137,141,161,140,139
  457.         DC.B 100,164,149,162,147,111,148,246,237,151,163,150,129,121,112,152
  458. *)
  459.   END;
  460. END WandleIso;
  461.  
  462.  
  463. END AssFuncs.
  464.  
  465.